import axios from 'axios'
import { getToken } from './auth'
import { Message } from 'element-ui'
import router from '@/router' // 导入router
import store from '@/store' // 导入store
// 创建一个axios实例
const service = axios.create({
  baseURL: 'https://api-hmzs.itheima.net/v1',
  timeout: 5000 // 请求超时时间
})

// 请求拦截器
service.interceptors.request.use(
  config => {
    console.log('config', config)
    // 添加日志
    console.log('发送请求:', config.url, config.method, config.data)
    // 在发送请求之前做些什么
    const token = getToken()
    // 如果有token就携带过去
    if (token) {
      config.headers.Authorization = `Bearer ${token}`
    } else {
    // 如果没有token就给一个空字符串，不然会报错
      config.headers.Authorization = ''
    }
    // 确保 PUT 请求的参数正确处理
    if (config.method === 'put' && config.data) {
      // 确保Content-Type正确设置
      config.headers['Content-Type'] = 'application/json'

      // 如果已经是字符串，不要再次 stringify
      if (typeof config.data !== 'string') {
        config.data = JSON.stringify(config.data)
      }
    }
    return config
  },
  error => {
    console.error('请求错误:', error)
    return Promise.reject(error)
  }
)

// 响应拦截器
service.interceptors.response.use(
  response => {
    console.log('response', response)
    console.log('收到响应:', response.config.url, response.status, response.data)
    return response.data
  },
  error => {
    // Message.error('请求失败，服务器无响应！')
    console.error('响应错误:', error.response || error)
    Message.error(error.response.data.msg)
    if (error.response.status === 401) {
      // 回到登录
      router.push('/login')
      store.commit('user/clearUserInfo')
    }
    return Promise.reject(error)
  }
)

export default service

